iT邦幫忙

2024 iThome 鐵人賽

DAY 24
1
Mobile Development

用最接近自然語言的Basic30天學會行動App系列 第 24

Basic30天學會行動App-第24章.多語系支援

  • 分享至 

  • xImage
  •  

第24章: 多語系支援

在全球化的時代,行動應用程式支援多語系已成為必備功能之一。多語系支援不僅能夠讓您的應用程式觸及更廣泛的用戶群體,也能提高用戶的體驗與滿意度。本章將探討如何在 B4A 中加入多語系支援,如何有效地管理翻譯資源,以及如何測試與優化多語系介面。

加入多語系支援

要在應用程式中實現多語系支援,首先需要確保所有的用戶界面文字都是從資源文件中讀取的,這樣可以根據用戶的語言設置自動切換顯示文字。B4A 提供了方便的方式來實現這一功能。

  1. 設置資源文件
    在 B4A 中,多語系支援是通過不同語言版本的資源文件來實現的。這些資源文件通常放置在專案的 Files 文件夾中,並根據語言區域分為不同的子文件夾。
    • Files/:默認語言的資源文件
    • Files/en/:英文資源文件
    • Files/zh/:繁體中文資源文件
    每個資源文件夾中都包含一個或多個 strings.xml 文件,定義了應用程式中所有可見文字的翻譯。
<!-- Files/zh/strings.xml -->
<resources>
    <string name="app_name">我的應用程式</string>
    <string name="welcome_message">歡迎使用我們的應用程式!</string>
</resources>
  1. 加載多語系資源
    在 B4A 中,可以使用 LoadString 函數根據鍵值載入對應語言的文字資源。
Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main")
    
    Dim lang As String = "zh"
    If File.Exists(File.DirAssets, lang & "/strings.xml") Then
        File.Copy(File.DirAssets, lang & "/strings.xml", File.DirInternal, "strings.xml")
    End If
    
    ' 載入翻譯資源
    Dim parser As XmlParser
    parser.Initialize(File.ReadString(File.DirInternal, "strings.xml"))
    parser.Parse("resources")
    
    ' 設置介面文本
    Label1.Text = LoadString("welcome_message")
End Sub

Sub LoadString(key As String) As String
    Dim parser As XmlParser
    parser.Initialize(File.ReadString(File.DirInternal, "strings.xml"))
    Dim node As XmlNode
    For Each node In parser.GetElementsByTagName("string")
        If node.Attributes.Get("name") = key Then
            Return node.TextContent
        End If
    Next
    Return ""
End Sub

管理翻譯資源

在多語系應用中,管理不同語言的翻譯資源至關重要。這不僅包括添加和更新翻譯,還包括確保翻譯的一致性與準確性。

  1. 使用翻譯工具
    可以使用專業的翻譯工具(如 POEditor、Crowdin)來管理和協作翻譯工作,這些工具可以幫助您組織翻譯資源,跟蹤翻譯進度,並確保不同語言之間的一致性。
  2. 檔案命名規則
    為了方便管理和維護,建議採用統一的檔案命名規則。例如,所有的翻譯文件都以 strings.xml 命名,而語言區域則通過文件夾的名稱來區分。
    • Files/zh/strings.xml:繁體中文翻譯
    • Files/en/strings.xml:英文翻譯
    這樣做的好處是即使應用程式後期需要添加更多語言,也不會對現有的資源管理造成影響。
  3. 保持翻譯更新
    隨著應用程式的迭代,介面上的文字內容可能會不斷更新,因此保持翻譯的同步更新非常重要。在每次更新應用程式的介面時,應確保所有語言版本的翻譯文件都已經更新到最新狀態。
    測試與優化多語系介面
    實現多語系支援後,測試與優化也是不可忽視的部分。確保應用程式在不同語言下顯示正常,是提供良好用戶體驗的關鍵。
  4. 測試多語系顯示
    在不同語言環境下進行測試,確保所有文字都能正確顯示,並且不會出現文本截斷或顯示錯誤的問題。可以通過在設備上切換系統語言來進行測試,或模擬不同語言環境來檢查介面顯示。
Sub SwitchLanguage(lang As String)
    If File.Exists(File.DirAssets, lang & "/strings.xml") Then
        File.Copy(File.DirAssets, lang & "/strings.xml", File.DirInternal, "strings.xml")
    End If
    ' 重新加載介面
    Activity_Create(False)
End Sub
  1. 優化介面佈局
    不同語言的文字長度和排版可能會有所不同,這需要開發者在設計介面時考慮到多語系的適應性。例如,德文或法文的單詞通常比英文長,因此在佈局中要留有足夠的空間。
  2. 測試特殊語言
    有些語言,如阿拉伯文和希伯來文,是從右到左的書寫方向,這可能會影響介面佈局的顯示。因此,在支援這些特殊語言時,需要進行額外的測試與調整,確保介面在這些語言下的顯示效果是合理的。

範例程式:多語系應用

以下是一個簡單的多語系應用範例,展示如何實作並切換不同語言。

Sub Process_Globals
    ' 無全域變數
End Sub

Sub Globals
    Private Label1 As Label
    Private btnSwitchLang As Button
    Private currentLang As String = "en"
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main")
    LoadLanguage(currentLang)
End Sub

Sub LoadLanguage(lang As String)
    If File.Exists(File.DirAssets, lang & "/strings.xml") Then
        File.Copy(File.DirAssets, lang & "/strings.xml", File.DirInternal, "strings.xml")
    End If
    
    Dim parser As XmlParser
    parser.Initialize(File.ReadString(File.DirInternal, "strings.xml"))
    parser.Parse("resources")
    
    Label1.Text = LoadString("welcome_message")
    btnSwitchLang.Text = LoadString("switch_lang")
End Sub

Sub LoadString(key As String) As String
    Dim parser As XmlParser
    parser.Initialize(File.ReadString(File.DirInternal, "strings.xml"))
    Dim node As XmlNode
    For Each node In parser.GetElementsByTagName("string")
        If node.Attributes.Get("name") = key Then
            Return node.TextContent
        End If
    Next
    Return ""
End Sub

Sub btnSwitchLang_Click
    If currentLang = "en" Then
        currentLang = "zh"
    Else
        currentLang = "en"
    End If
    LoadLanguage(currentLang)
End Sub

結論
在本章中,我們探討了如何在 B4A 中加入多語系支援,如何有效管理翻譯資源,以及如何測試與優化多語系介面。這些技術能夠幫助您擴展應用程式的覆蓋範圍,使其適應不同語言環境中的用戶需求。
多語系支援是一個重要且不可忽視的功能,它能夠顯著提高應用程式的國際化水平和市場競爭力。隨著全球化的進程,這一功能的需求將越來越高。希望本章內容能夠幫助您掌握多語系支援的實現方法,並將這一功能成功應用於您的專案中。

參考網址
https://www.b4x.com/teach.html
https://www.b4x.com/blog.html/
https://www.b4x.com/showcase.html
https://www.b4x.com/learn.html
https://www.b4x.com/android/forum/


上一篇
Basic30天學會行動App-第23章.創建地圖與位置功能
下一篇
Basic30天學會行動App-第25章.測試與除錯技術
系列文
用最接近自然語言的Basic30天學會行動App30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言